#ifndef GY_FORMATFLOAT_H
#define GY_FORMATFLOAT_H

#include "GY_BasicsCalculators.h"

class GY_CONTROLLIBRARY_EXPORT GY_FormatFloat : public GY_BasicsCalculators
{
    Q_OBJECT

public:
    explicit Q_INVOKABLE GY_FormatFloat(const QString &guid,QGraphicsItem *parent = nullptr);
    ~GY_FormatFloat(){};

private:
    /**
     * @brief initializationPropertyInfo 初始化属性信息
     */
    void initializationPropertyInfo();
    /**
     * @brief updateValue 更新属性值
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateValue(const QString &name, const QVariant &value);
    /**
     * @brief updateMinLength 更新最小长度
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateMinLength(const QString &name, const QVariant &value);
    /**
     * @brief updateMaxLength 更新最大长度
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateMaxLength(const QString &name, const QVariant &value);
    /**
     * @brief updateNumDecimalPlaces 更新小数点位数
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateNumDecimalPlaces(const QString &name, const QVariant &value);
    /**
     * @brief updatePlusSignMethod 更新前置符号，空格、+、无符号
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updatePlusSignMethod(const QString &name, const QVariant &value);
    /**
     * @brief updateLeadingZeros 更新在output加上小数后长度还小于最小长度时，是否在前面加0（false加空格）
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateLeadingZeros(const QString &name, const QVariant &value);
    /**
     * @brief updateOverflowChar 更新溢出时output填充符号
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateOverflowChar(const QString &name, const QVariant &value);
    /**
     * @brief updateOutputCapacity 更新长度限制
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateOutputCapacity(const QString &name, const QVariant &value);
    /**
     * @brief updateOutput 不做外部调用
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateOutput(const QString &name, const QVariant &value);
    /**
     * @brief setOutput  设置输出字符串
     */
    void setOutput();

};

#endif // GY_FORMATFLOAT_H
